#ifndef __SHAPE_INCLUDE
#define __SHAPE_INCLUDE

#include <cmath>
#include <iostream>

using namespace std;

/**
    Abstract base class for all shapes.
*/
class Shape {
    public:
        /* Abstract declaration of a function that will return the shape's area.  */
        virtual void area() = 0;
        
        /* Abstract declaration of a function that will return the shape's perimeter. 
            Only valid for 2D shapes. */  
        virtual void perimeter() = 0;
        
        /* Abstract declaration of a function that will return the shape's volume. 
            Only valid for 3D shapes. */  
        virtual void volume() = 0;  
};

#endif